let db = require('./db.json')  //拿到数据准备使用
const jwt = require('jsonwebtoken');

module.exports=(req,res,next)=>{
    console.log(req.path);
const authHeader = req.headers['authorization'];
   


    // 访问了登录接口进行验证账号和密码是否正确
    if(req.method==='POST'&&req.path==='/login'){
      let arr = db.login
        let user =arr.find(item=>item.username===req.body.phone)
        if(user){
            if(user.password===req.body.password){
                // 生成token//对用户名进行加密，失效1小时
                const token = jwt.sign({ username: user.username }, '5201314', { expiresIn: '1h' });
                return res.status(200).json({
                    message:'登录成功',
                    token:token
                })
            }else{
                return res.status(400).json({
                    message:'密码错误'
                })
            }
        }else{
            return res.status(400).json({
                message:'用户不存在'
            })
        }
    }


     // 假设请求头中带有 Authorization 字段且以 Bearer 开头来获取 token，并且访问的不是登录接口，就进行验证
     if (authHeader && authHeader.startsWith('Bearer ')&&req.path!=='/login') {
        console.log('拥有请求头');
        const token = authHeader.split(' ')[1]; //拿到令牌
        try {
          // 解密 token
          const decoded = jwt.verify(token, '5201314'); // 假设这是你的密钥
        //   console.log(123);
          // 可以在这里处理解密后的数据，比如设置用户信息等
        //   req.user = decoded;
            if(req.method=='POST'&&req.path == '/profile'){
                console.log(decoded,'判断是谁的账号');
                let user = db.profile.find(item=>item.username===decoded.username)
                return res.status(200).json({
                    message:'获取用户信息成功',
                    user:user
                })
            }
          next();
        } catch (error) {
          res.status(401).json({ message: '无效的令牌' });
        }
      } else {
        console.log('未提供令牌');
        res.status(401).json({ message: '未提供令牌' });
      }

    console.log('经过了中间件');
    // next();
}
